In modern communications systems a video signal may be sent from one terminal to another over a medium such as a wired and/or wireless network, often a packet-based network such as the Internet. Typically the frames of the video are encoded by an encoder at the transmitting terminal in order to compress them for transmission over the network. The encoding for a given frame may comprise intra frame encoding whereby blocks are encoded relative to other blocks in the same frame. In this case a block is encoded in terms of a difference (the residual) between that block and a neighbouring block. Alternatively the encoding for some frames may comprise inter frame encoding whereby blocks in the target frame are encoded relative to corresponding portions in a preceding frame, typically based on motion prediction. In this case a block is encoded in terms of a motion vector identifying an offset between the block and the corresponding portion from which it is to be predicted, and a difference (the residual) between the block and the corresponding portion from which it is predicted. A corresponding decoder at the receiver decodes the frames of the received video signal based on the appropriate type of prediction, in order to decompress them for output to a screen.
However, frames or parts of frames may be lost in transmission. For instance, typically packet-based networks do not guarantee delivery of all packets, e.g. one or more of the packets may be dropped at an intermediate router due to congestion. As another example, data may be corrupted due to poor conditions of the network medium, e.g. noise or interference. Forward error correction (FEC) or other such coding techniques can sometimes be used to recover lost packets, based on redundant information included in the encoded bitstream. However, if certain packets are still not recovered after FEC then the lost parts of the signal cannot be decoded at the decoder.
To accommodate this, it is known to provide a concealment algorithm at the decoder side, to conceal patches of lost data within a current frame. A concealment algorithm works by extrapolating or interpolating a replacement for the lost data from information that has been successfully received and decoded—either by extrapolating the replacement data from a preceding, received frame; or extrapolating replacement data from another, received part of the same frame; or by interpolating between received parts of the same frame. That is, typically concealment operates on decoded data (images, motion vectors) and tries to reconstruct the same type of data. An alternative to applying a concealment algorithm is simply to discard the current frame and instead freeze the preceding frame until a subsequent usable frame is received and decoding can recommence. Sometimes concealment provides better quality than just freezing the previous frame, but other times not. E.g. the concealment may result in visible artefacts that are perceptually worse than just freezing.